﻿#define _CRT_SECURE_NO_WARNINGS 
#include <stdio.h>

//#define MAX(a, b) ( (a) > (b) ? (a) : (b) )
//int main()
//{
//	int x = 5;
//	int y = 8;
//	int z = MAX(x++, y++);
//	printf("x=%d y=%d z=%d\n", x, y, z);
//	return  0;
//}

 //#define PRINT(val, format)  printf("the value of "#val" is " format"\n", val)
 //
 //int main()
 //{
 //	int a = 10;
 //	PRINT(a, "%d");

 //	int b = 20;
 //	PRINT(b, "%d");

 //	float f = 3.5f;
 //	PRINT(f, "%f");

 //	return 0;
 //}

//#define  PRINT(val,format) printf("the value of "#val" is "format"\n",val)
// 
// int main()
// {
//     int a = 10;
//     PRINT(a, "%d");
//     
//     int b = 20;
//     PRINT(b, "%d");
//    
//     float f = 3.5f;
//     PRINT(f, "%.1f");
//
//     return 0;
// }

// 函数定义
//int int_max(int x, int y)
//{
//	return x > y ? x : y;
//}
//
//// 函数定义
//float float_max(float x, float y)
//{
//	return x > y?x:y;
//}
//
//int main()
//{
//	//调⽤函数
//	int m = int_max(2, 3);
//	printf("%d\n", m);
//	float fm = float_max(3.5f, 4.5f);
//	printf("%.2f\n", fm);
//	return 0;
//}

//宏定义
//#define GENERIC_MAX(type) \
//type type##_max(type x, type y)\
//{ \
// return (x>y?x:y); \
//}


 //#define GENERIC_MAX(type) \
 //type type##_max(type x, type y)\
 //{\
	// return (x>y?x:y);\
 //}

 //GENERIC_MAX(int)
 //GENERIC_MAX(float)
 //GENERIC_MAX(double)

 //int main()
 //{
	// int m = int_max(3, 5);
	// printf("%d\n", m);

	// return 0;
 //}

//定义宏
//#define GENERIC_MAX(type) \
//type type##_max(type x,type y) \
//{ \
// return (x>y?x:y); \
//}  //最后一个就不需要反斜杆了哈
//
//GENERIC_MAX(int)
//GENERIC_MAX(float)
//
//
// int main()
//{
//	//定义宏
//	 int m = int_max(2, 3);
//	printf("%d\n", m);
//
//	float fm = float_max(3.5f, 4.5f);
//	printf("%.2f\n", fm);
//	return 0;
//}

 
//#define MAX 10
//#undef MAX
//
//int main()
//{
//	printf("%d", MAX);
//	return 0;
//}

//成功例子
//#define __DEBUG__
//int main()
//{
//	int i = 0;
//	int arr[10] = { 0 };
//	for (i = 0; i < 10; i++)
//	{
//		arr[i] = i;
//#ifdef __DEBUG__  //当它成功时就可以直接打印，不成功就可以忽视不即。
//		printf("%d ", arr[i]);//为了观察数组是否赋值成功。 
//#endif //__DEBUG__
//	}
//	return 0;
//}


//正确例子
//int main()
//{
//#if 2==2 ///当它符合标准就直接打印，不符合就忽视不即直接结束。
//    printf("hehe\n");
//#endif
//    return 0;
// }

//错误例子
 /*int main()
 {
     #if 1==2 ///当它符合标准就直接打印，不符合就忽视不即直接结束。
         printf("hehe\n");
     #endif
     return 0;
 }*/


// #define M 3
//int main()
//{
//    int a = 3;
//#if M==a  //当它符合标准就直接打印，不符合就忽视不即直接结束。
//	printf("hehe\n");
//#endif
//    return 0;
//}


// 不小心定义多次头文件
#include "test.h"
#include "test.h"
#include "test.h"
#include "test.h"
#include "test.h"
int main()
{

	return 0;
}